package com.zmn.oms.services.interfaces.conf.cancel;

import com.zmn.oms.model.entity.conf.cancel.OrderCancelReason;
import com.zmn.oms.model.entity.conf.cancel.OrderCancelReasonQuery;
import com.zmn.oms.model.vo.conf.cancel.OrderCancelReasonVO;

import java.util.List;

/**
 * @author tanbiao
 * @description
 * @since 2019/10/21 18:17
 * @modifier
 **/
public interface OrderCancelReasonService {
    /**
     * ID 查询
     *
     * @param id
     *            分类ID
     * @return
     */
    OrderCancelReason findByKey(int id);

    /**
     * ID 查询
     *
     * @param ids
     * @return
     */
    List<OrderCancelReason> findByKeys(List<Integer> ids);

    /**
     * 查询最大的排序值
     *
     * @return
     */
    Integer findMaxSort();

    /**
     * 搜索
     *
     * @param query
     *            条件
     * @return
     */
    List<OrderCancelReasonVO> listByQuery(OrderCancelReasonQuery query);

    /**
     * 分页搜索
     *
     * @param query
     *            条件
     * @return
     */
    List<OrderCancelReasonVO> listPageByQuery(OrderCancelReasonQuery query);

    /**
     * 搜索统计
     *
     * @param query
     *            条件
     * @return
     */
    Integer countByQuery(OrderCancelReasonQuery query);

    /**
     * 更新
     *
     * @param reason
     *            对象
     * @return
     */
    Integer updateByKey(OrderCancelReason reason);

    /**
     * 更新排序
     *
     * @param id
     *            id
     * @param sort
     *            排序值
     * @param staffName
     *            更新人
     * @return
     */
    Integer updateSortKey(Integer id, Integer sort, String staffName);

    /**
     * 更新首字母
     *
     * @param id
     *            分类id
     * @param firstLetter
     *            首字母
     * @param staffName
     *            更新人
     * @return
     */
    Integer updateFirstLetterByKey(Integer id, String firstLetter, String staffName);

    /**
     * 批量更新状态
     *
     * @param ids
     *            分类id
     * @param status
     *            状态值
     * @param staffName
     *            更新人
     * @return
     */
    int updateStatusBatch(List<Integer> ids, Integer status, String staffName);

    /**
     * 插入
     *
     * @param reason
     *            对象
     * @return
     */
    Integer insert(OrderCancelReason reason);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    Integer deleteByKey(Integer id);

}
